package com.urban.pooling.dto;

import java.io.Serializable;
import java.util.Date;

import com.urban.pooling.domain.GeoPoint;
import com.urban.pooling.domain.User;

public class RouteRequestDto implements Serializable {
	private static final long serialVersionUID = 1L;

	private Integer id;
	private Date creationDate;
	private Integer routeId;
	private User createdBy;
	private String status;
	private GeoPoint pickupPoint;
	private GeoPoint dropOffPoint;
	private Integer seats;
	private String message;

	public RouteRequestDto() {
	}

	public Integer getId() {
		return id;
	}

	public void setId(Integer id) {
		this.id = id;
	}

	public Date getCreationDate() {
		return creationDate;
	}

	public void setCreationDate(Date creationDate) {
		this.creationDate = creationDate;
	}

	public Integer getRouteId() {
		return routeId;
	}

	public void setRouteId(Integer routeId) {
		this.routeId = routeId;
	}

	public User getCreatedBy() {
		return createdBy;
	}

	public void setCreatedBy(User createdBy) {
		this.createdBy = createdBy;
	}

	public String getStatus() {
		return status;
	}

	public void setStatus(String status) {
		this.status = status;
	}

	public GeoPoint getPickupPoint() {
		return pickupPoint;
	}

	public void setPickupPoint(GeoPoint pickupPoint) {
		this.pickupPoint = pickupPoint;
	}

	public GeoPoint getDropOffPoint() {
		return dropOffPoint;
	}

	public void setDropOffPoint(GeoPoint dropOffPoint) {
		this.dropOffPoint = dropOffPoint;
	}

	public Integer getSeats() {
		return seats;
	}

	public void setSeats(Integer seats) {
		this.seats = seats;
	}

	public String getMessage() {
		return message;
	}

	public void setMessage(String message) {
		this.message = message;
	}

	public static class RouteRequestDtoBuilder {
		private Integer id;
		private Date creationDate;
		private Integer routeId;
		private User createdBy;
		private String status;
		private GeoPoint pickupPoint;
		private GeoPoint dropOffPoint;
		private Integer seats;
		private String message;

		public RouteRequestDtoBuilder id(Integer id) {
			this.id = id;
			return this;
		}

		public RouteRequestDtoBuilder creationDate(Date creationDate) {
			this.creationDate = creationDate;
			return this;
		}

		public RouteRequestDtoBuilder routeId(Integer routeId) {
			this.routeId = routeId;
			return this;
		}

		public RouteRequestDtoBuilder createdBy(User createdBy) {
			this.createdBy = createdBy;
			return this;
		}

		public RouteRequestDtoBuilder status(String status) {
			this.status = status;
			return this;
		}

		public RouteRequestDtoBuilder pickupPoint(GeoPoint pickupPoint) {
			this.pickupPoint = pickupPoint;
			return this;
		}

		public RouteRequestDtoBuilder dropOffPoint(GeoPoint dropOffPoint) {
			this.dropOffPoint = dropOffPoint;
			return this;
		}

		public RouteRequestDtoBuilder seats(Integer seats) {
			this.seats = seats;
			return this;
		}

		public RouteRequestDtoBuilder message(String message) {
			this.message = message;
			return this;
		}

		public RouteRequestDto build() {
			return new RouteRequestDto(this);
		}
	}

	private RouteRequestDto(RouteRequestDtoBuilder builder) {
		this.id = builder.id;
		this.creationDate = builder.creationDate;
		this.routeId = builder.routeId;
		this.createdBy = builder.createdBy;
		this.status = builder.status;
		this.pickupPoint = builder.pickupPoint;
		this.dropOffPoint = builder.dropOffPoint;
		this.seats = builder.seats;
		this.message = builder.message;
	}
}
